// aioxs所有配置
// 引入axios
import axios from 'axios'
import qsString from 'querystring'
// 引入封装好的路由模块
import router from '../router'

let baseUrl = '/api'

// 设置请求拦截器
axios.interceptors.request.use((req)=>{
    // console.log(req);
    // 设置请求头、token
    if(req.url != "/api/adminLogin"){
        // 添加token
        req.headers.authorization=sessionStorage.getItem('userinfo')?
        JSON.parse(sessionStorage.getItem('userinfo')).token : null
    }
    return req
})

// 设置响应拦截器
axios.interceptors.response.use(res=>{
    // 全局错误拦截 token失效等
    if(res.data.msg=="请设置请求头，并携带验证字符串"){
        alert(res.msg)
        // 强制跳转到登录
        router.push('/login')
    }else if(res.data.msg=="登录已过期或访问权限受限"){
        alert(res.msg)
        router.push('/login')
    }else{
        return res.data
    }
    
})

// get封装
export const get = (url,params={})=>{
    return new Promise((resolve, reject) => {
        //调用axios的get
        axios.get(baseUrl+url,{params})
        .then(res=>resolve(res))
        .catch(err=>reject(err))
    })
}

// post 封装
export const post =(url,params={},isFile=false)=>{
    // 设置一个空对象
    let data = {}
    // if判断是否有文件
    if(isFile){
        // 有文件修改content-type
        data=new FormData()
        for(let i in params){
            data.append(i,params[i])
        }
    }else{
        data=qsString.stringify(params)
    }
    return new Promise((resolve, reject) => {
        //调用axios的post
        axios.post(baseUrl+url,data)
        .then(res=>resolve(res))
        .catch(err=>reject(err))
    })
}